package transitarios.io;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

import transitarios.api.ITransitario;

public class TransitariosFileIO {

	public static void escreveEmFicheiro(String fileName,
			ITransitario transitariosPOO) throws IOException {

		FileOutputStream foos = new FileOutputStream(fileName);
		ObjectOutputStream out = new ObjectOutputStream(foos);
		out.writeObject(transitariosPOO);
		out.close();
		foos.close();

	}

	public static List<String> leDeFciheiro(ITransitario transitariosPOO,
			String fileName) throws IOException, ClassNotFoundException {

		List<String> relatorioLeituraFicheiro = new ArrayList<String>();

		ITransitario savedTransitariosPOO = null;

		FileInputStream fileInputStream = new FileInputStream(fileName);
		ObjectInputStream in = new ObjectInputStream(fileInputStream);
		savedTransitariosPOO = (ITransitario) in.readObject();
		in.close();
		fileInputStream.close();

		// getGestaoClientes
		transitariosPOO.setGestaoClientes(savedTransitariosPOO
				.getGestaoClientes());
		relatorioLeituraFicheiro.add("Carregados "
				+ savedTransitariosPOO.getGestaoClientes().contagem()
				+ " clientes.");

		// Frota
		transitariosPOO.setGestaoUtilizacaoFrota(savedTransitariosPOO
				.getGestaoUtilizacaoFrota());
		relatorioLeituraFicheiro.add("Carregada Info Utilizacao Frota.");

		// getGestaoCondutores
		transitariosPOO.setGestaoCondutores(savedTransitariosPOO
				.getGestaoCondutores());
		relatorioLeituraFicheiro.add("Carregados "
				+ savedTransitariosPOO.getGestaoCondutores().contagem()
				+ " condutores.");

		// setGestaoEncomendas
		transitariosPOO.setGestaoEncomendas(savedTransitariosPOO
				.getGestaoEncomendas());
		relatorioLeituraFicheiro.add("Carregadas "
				+ savedTransitariosPOO.getGestaoEncomendas().contagem()
				+ " encomendas.");

		// setGestaoVeiculos
		transitariosPOO.setGestaoVeiculos(savedTransitariosPOO
				.getGestaoVeiculos());
		relatorioLeituraFicheiro.add("Carregados "
				+ savedTransitariosPOO.getGestaoVeiculos().contagem()
				+ " veiculos.");

		transitariosPOO.setGestaoParametrizacoes(savedTransitariosPOO
				.getGestaoParametrizacoes());

		relatorioLeituraFicheiro.add("Carrega Info GestaoParametrizacoes");
		// acresecentar carregamentos

		return relatorioLeituraFicheiro;

	}

}
